package com.lt.lumentracks.service;

import com.aliyuncs.exceptions.ClientException;
import com.lt.lumentracks.entity.dto.user.UserAddDTO;
import com.lt.lumentracks.entity.dto.user.UserDTO;
import com.lt.lumentracks.entity.dto.user.UserLoginDTO;
import com.lt.lumentracks.entity.dto.user.UserUpdateDTO;
import com.lt.lumentracks.entity.po.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lt.lumentracks.entity.vo.common.PageVO;
import com.lt.lumentracks.entity.vo.common.Result;
import com.lt.lumentracks.entity.vo.user.UserVO_conversationList;
import com.lt.lumentracks.entity.vo.user.UserVO_info;
import com.lt.lumentracks.entity.vo.user.UserVO_post;
import com.lt.lumentracks.entity.vo.user.UserVO_profile;

import java.util.List;

/**
 * <p>
 * 用户基础信息表 服务类
 * </p>
 *
 * @author swl
 * @since 2025-07-07
 */
public interface IUserService extends IService<User> {


    // 添加用户
    Result<Integer> addUser(UserAddDTO addDTO);


    // 删除用户
    Result<String> delUserById(Integer id);


    // 修改用户
    Result<String> updateUserById(UserUpdateDTO updateDTO);

    // 修改用户头像
    Result<String> updateAvatar(Integer uid, String avatarUrl) throws ClientException;


    // 查询所有用户
    Result<List<User>> getAllUser();

    // 分页查询所有用户
    PageVO<User> getAllUserByPage(long current, long size);

    // 条件查询
    PageVO<User> getInCondition(UserDTO userDTO);

    // 根据id查询用户--返回部分信息（其他用户个人主页查询业务用）
    UserVO_profile getById_ProfileQuery(Integer id);

    // 根据id查询用户--返回部分信息（查询帖子业务用）
    UserVO_post getById_PostQuery(Integer id);

    // 根据id查询用户--返回部分信息（查询会话列表业务用）
    List<UserVO_conversationList> getById_ConvListQuery(List<Integer> ids);


    // 用户登录
    Result<String> login(UserLoginDTO userLoginDTO);

    // 根据jwt令牌返回用户具体信息
    UserVO_info getUserInfoByJwt(String jwt);
}
